package com.ruoyi.cms.service.impl;

import java.sql.Array;
import java.util.List;

import com.ruoyi.cms.dto.CityDisplayDTO;
import com.ruoyi.cms.vo.DisplayVO;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.exception.UtilException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.framework.web.service.TokenService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.cms.domain.CDisplay;
import com.ruoyi.cms.mapper.CCityMapper;
import com.ruoyi.cms.domain.CCity;
import com.ruoyi.cms.service.ICCityService;

/**
 * 城市管理Service业务层处理
 * 
 * @author Choi
 * @date 2021-08-23
 */
@Service
public class CCityServiceImpl implements ICCityService 
{
    @Autowired
    private CCityMapper cCityMapper;
    @Autowired
    private TokenService tokenService;

    @Override
    public void deleteCityDisplay(long id, long[] displayIds) {
        cCityMapper.deleteCityDisplay(id, displayIds);
    }

    @Override
    public void editCityDisplay(CityDisplayDTO cityDisplayDTO) {
        cCityMapper.updateCityDisplay(cityDisplayDTO);
    }

    @Override
    public void addCityDisplay(List<CityDisplayDTO> list) {
        cCityMapper.insertCityDisplay(list);
    }

    @Override
    public List<DisplayVO> getAllDisplays(long id) {
        return cCityMapper.getAllDisplays(id);
    }

    @Override
    public List<DisplayVO> getDisplayList(long id) {
        return cCityMapper.getDisplayById(id);
    }

    /**
     * 查询城市管理
     * 
     * @param id 城市管理ID
     * @return 城市管理
     */
    @Override
    public CCity selectCCityById(Long id)
    {
        return cCityMapper.selectCCityById(id);
    }

    /**
     * 查询城市管理列表
     * 
     * @param cCity 城市管理
     * @return 城市管理
     */
    @Override
    public List<CCity> selectCCityList(CCity cCity)
    {
        cCity.setUserId(this.getUserId());
        return cCityMapper.selectCCityList(cCity);
    }

    /**
     * 新增城市管理
     * 
     * @param cCity 城市管理
     * @return 结果
     */
    @Transactional
    @Override
    public int insertCCity(CCity cCity)
    {
        CCity cityName = cCityMapper.getByName(cCity.getName());
        if (cityName != null) {
            throw new UtilException("该城市已存在，无需再次添加");
        }
        cCity.setUserId(this.getUserId());
        cCity.setCreateTime(DateUtils.getNowDate());
        int rows = cCityMapper.insertCCity(cCity);
        return rows;
    }

    /**
     * 修改城市管理
     * 
     * @param cCity 城市管理
     * @return 结果
     */
    @Transactional
    @Override
    public int updateCCity(CCity cCity)
    {
        cCity.setUpdateTime(DateUtils.getNowDate());
        return cCityMapper.updateCCity(cCity);
    }

    /**
     * 批量删除城市管理
     *
     * @param ids 需要删除的城市管理ID
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteCCityByIds(Long[] ids)
    {
        return cCityMapper.deleteCCityByIds(ids);
    }

    /**
     * 删除城市管理信息
     *
     * @param id 城市管理ID
     * @return 结果
     */
    @Override
    public int deleteCCityById(Long id)
    {
        return cCityMapper.deleteCCityById(id);
    }


    private SysUser getUser() {
        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
        if (loginUser == null) {
            return null;
        }
        SysUser user = loginUser.getUser();
        return user;
    }

    private Long getUserId() {
        SysUser user = this.getUser();
        return user == null ? 0 : user.getUserId();
    }

}
